package Proyecto2.Source;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Point;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class GuiJuego extends javax.swing.JFrame {
	private JPanel PanelJuego;
	private JPanel PanelMenu;
	private JLabel labelFondo;
	private JButton BotonAyuda;
	private JLabel labelFondoMenu;
	private JPanel fondoMenu;
	private JPanel Fondo;
	private JLabel Puntos;
	private JButton BotonSalir;
	
	private MovimientosTeclado movimientosTeclado;
	
	private NaveJugador jLabelDelJugador;
	private Disparo disparoJugador;
	
	private Juego juego;

	public GuiJuego(){
		juego = new Juego(new Clinkz(),PanelJuego);
		initGUI();
		initGame();
	}
	
	private void initGame() {
		//ACA SE PREPARA EL TECLADO
		movimientosTeclado = new MovimientosTeclado();
		movimientosTeclado.setJuego(this);
		movimientosTeclado.setNave(jLabelDelJugador);
		this.addKeyListener(movimientosTeclado);
		
		//ACA SE PREPARAN LOS MOVIMIENTOS DE LAS NAVES ENEMIGAS
		juego.crearOleada1();
		int factor = 0;
		for (NaveEnemiga jLabelCaza : juego.naves()){
			PanelJuego.add(jLabelCaza);
			jLabelCaza.setBounds(0, 0, 50, 50);
			MovimientosCazaL moveCaza = new MovimientosCazaL(factor);
			moveCaza.setJuego(this);
			moveCaza.setNave(jLabelCaza);
			moveCaza.preparar();
			moveCaza.jugar();
			moveCaza.setLogica(juego);
			
			factor += 2*jLabelCaza.getWidth();
		}
		
	}
	
	private void initGUI() {
		try {
			{
				getContentPane().setLayout(null);
				this.setPreferredSize(new java.awt.Dimension(500, 600));
				this.setSize(500, 600);
				this.setTitle("DEMO VERSION");
				//this.setResizable(false);
				this.addWindowListener(new WindowAdapter() {
					public void windowClosing(WindowEvent evt) {
						cerrarVentana(evt);
					}
				});
			}
			{
				PanelJuego = new JPanel();
				getContentPane().add(PanelJuego, "Center");
				PanelJuego.setBounds(0, 70, 484, 486);
				PanelJuego.setBackground(new java.awt.Color(128,128,128));
				PanelJuego.setLayout(null);
				PanelJuego.setOpaque(false);
				{
					jLabelDelJugador = new Clinkz();
					PanelJuego.add(jLabelDelJugador);
					jLabelDelJugador.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Proyecto2/Imagenes/alien1 (2).png")));
					jLabelDelJugador.setBounds(217, 385, 48, 92);	
				}
				{	
					
					//jLabelCaza = new CazaLigero();
					//PanelJuego.add(jLabelCaza);
					//jLabelCaza.setBounds(0, 0, 50, 50);
					//jLabelCaza.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Proyecto2/Imagenes/CazaL.png")));
				}
			
			
			}
			{
				PanelMenu = new JPanel();
				getContentPane().add(PanelMenu);
				PanelMenu.setBounds(0, 0, 484, 70);
				PanelMenu.setBackground(new java.awt.Color(128,128,128));
				PanelMenu.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
				PanelMenu.setLayout(null);
				{
					BotonAyuda = new JButton();
					PanelMenu.add(BotonAyuda);
					BotonAyuda.setText("AYUDA");
					BotonAyuda.setBounds(13, 13, 81, 25);
					BotonAyuda.setFocusable(false);
					BotonAyuda.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent evt) {
							BotonAyudaActionPerformed(evt);
						}
					});
				}
				{
					BotonSalir = new JButton();
					PanelMenu.add(BotonSalir);
					BotonSalir.setText("SALIR");
					BotonSalir.setBounds(393, 13, 69, 42);
					BotonSalir.setFocusable(false);
					BotonSalir.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent evt) {
							BotonSalirActionPerformed(evt);
						}
					});
				}
				
				{
					Puntos = new JLabel();
					PanelMenu.add(Puntos);
					Puntos.setText(""+juego.puntaje());
					Puntos.setBounds(168, 12, 164, 42);
					Puntos.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
				}
				{
					fondoMenu = new JPanel();
					PanelMenu.add(fondoMenu);
					fondoMenu.setBounds(1, 1, 481, 68);
					fondoMenu.setLayout(null);
					{
						labelFondoMenu = new JLabel();
						fondoMenu.add(labelFondoMenu);
						labelFondoMenu.setBounds(0, 0, 481, 68);
						labelFondoMenu.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Proyecto2/Imagenes/DestinyPSExclusiveOutrageousFortune.jpg")));
					}
				}
			}
			{
				Fondo = new JPanel();
				getContentPane().add(Fondo);
				Fondo.setBounds(0, 70, 484, 486);
				Fondo.setLayout(null);
				{
					labelFondo = new JLabel();
					Fondo.add(labelFondo);
					labelFondo.setBounds(0, 0, 484, 486);
					labelFondo.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Proyecto2/Imagenes/universo.jpg")));
				}
			}

		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void graficaDisparo(){
		disparoJugador = new Disparo();
		disparoJugador = jLabelDelJugador.disparar();
		disparoJugador.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Proyecto2/Imagenes/feo.png")));
		PanelJuego.add(disparoJugador);
		
		int px = disparoJugador.getPos().x;
		int py = disparoJugador.getPos().y;
		disparoJugador.setBounds(px+12, py-412, 24, 412);
		
		AutoBorrar ab = new AutoBorrar(disparoJugador,PanelJuego,500);
		ab.start();
		
	}
	
	public NaveJugador getJugador(){
		return jLabelDelJugador;
	}
	
	public void sacarNave(Nave n){
		//Animacion de la explosion
		Point p = n.getLocation();
		JLabel explosion = new JLabel();
		explosion.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Proyecto2/Imagenes/gifExplo.gif")));
		PanelJuego.add(explosion);
		explosion.setBounds(p.x, p.y, 71, 100);
		AutoBorrar ab = new AutoBorrar(explosion,PanelJuego,250);
		ab.start();
		//Borra la nave del panel
		PanelJuego.remove(n);
	}
	
	public void actualizarPuntaje(){
		Puntos.setText(""+juego.puntaje());
	}
	
	private void BotonSalirActionPerformed(ActionEvent evt) {
		cerrarTodo();
	}
	
	private void cerrarVentana(WindowEvent evt) {
		cerrarTodo();
	}
	
	private void cerrarTodo() {
		this.dispose();
		System.exit(0);
		
	}
	
	private void BotonAyudaActionPerformed(ActionEvent evt) {
		JOptionPane.showMessageDialog(null,"Movimientos de la nave: teclas ← ↑ → ↓", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
		JOptionPane.showMessageDialog(null,"Disparo: Tecla A", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
	}

}
